package com.factory.factorymethod.section4;

import com.factory.factorymethod.section4.extend.HumanFactory;

/**
 * 客户端: 演示
 * 1. 多工厂演示
 * 2. 通过泛型改造成单工厂
 */
public class NvWa {

	public static void main(String[] args) {
		
		testMultiFactory();
		System.out.println("*******************************************************");
		testOneFactory();
			
	}

	// 多工厂演示
	public static void testMultiFactory () {
		//女娲第一次造人，火候不足，缺陷产品
		System.out.println("--造出的第1批人是白色人种--");
		Human whiteHuman = (new WhiteHumanFactory()).createHuman();
		whiteHuman.getColor();
		whiteHuman.talk();

		//女娲第二次造人，火候过足，又是次品，
		System.out.println("\n--造出的第2批人是黑色人种--");
		Human blackHuman = (new BlackHumanFactory()).createHuman();
		blackHuman.getColor();
		blackHuman.talk();

		//第三次造人，火候正正好，优品！黄色人种
		System.out.println("\n--造出的第3批人是黄色人种--");
		Human yellowHuman = (new YellowHumanFactory()).createHuman();
		yellowHuman.getColor();
		yellowHuman.talk();
	}

	// 将上面多工厂通过泛型改造成单工厂
	public static void testOneFactory(){
		Human human = HumanFactory.createHuman(YellowHuman.class);
		human.getColor();
		human.talk();
	}

}
